package com.note.feng.leetcode.algorithms.easy;

public class TwoHundredNinetyTwo {

    /**
     * 292 Nim游戏
     * 你和你的朋友，两个人一起玩 Nim 游戏：
     *
     * 桌子上有一堆石头。
     * 你们轮流进行自己的回合， 你作为先手 。
     * 每一回合，轮到的人拿掉 1 - 3 块石头。
     * 拿掉最后一块石头的人就是获胜者。
     * 假设你们每一步都是最优解。请编写一个函数，来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。
     * 如果可以赢，返回 true；否则，返回 false 。
     *
     * 示例 1：
     *
     * 输入：n = 4
     * 输出：false
     * 解释：以下是可能的结果:
     * 1. 移除1颗石头。你的朋友移走了3块石头，包括最后一块。你的朋友赢了。
     * 2. 移除2个石子。你的朋友移走2块石头，包括最后一块。你的朋友赢了。
     * 3.你移走3颗石子。你的朋友移走了最后一块石头。你的朋友赢了。
     * 在所有结果中，你的朋友是赢家。
     * 示例 2：
     *
     * 输入：n = 1
     * 输出：true
     * 示例 3：
     *
     * 输入：n = 2
     * 输出：true
     *
     * 提示：
     *
     * 1 <= n <= 231 - 1
     *
     * 来源：力扣（LeetCode）
     * 链接：https://leetcode.cn/problems/nim-game
     */
    /**
     * 解法：当石头为1,2,3颗时，你可以一次拿走，你赢，
     * 当石头是4颗时，一定是朋友赢
     * 当石头是5,6,7颗时，你只要保证你拿完后，剩下4颗，你一定赢
     * 当石头是4,8,12,16.。。。时，一定是朋友赢
     * @param n
     * @return
     */
    public boolean canWinNim(int n) {
        return n % 4 != 0;
    }
}
